<html>
	<head>
		<title>
			Specifications for BSpec
		</title><style type="text/css">
			body
{
	color: black;
	font-family: sans-serif;
	font-size: small;
}
h1
{
	font-size: 2.3em;
	line-height: 1.2em;
	margin-bottom: 0.1em;
	padding-bottom: 0;
}
h2
{
	font-size: 1.8em;	
	border-top: 1px solid #AAAAAA;
	margin-bottom: 0.6em;
}
h3
{
	font-size: 1.4em;
	font-weight:bold;
}
h1, h2, h3
{
	color: black;
	font-weight: normal;
	margin: 0;
	padding-bottom: 0.17em;
	padding-top: 0.5em;
}
ul
{
	line-height: 1.5em;

}
li
{
	margin-bottom: 0.1em;
}
		</style>
	</head><body>
		<h1>
			BSpec
		</h1><h2>
			Table of contents
		</h2><ol>
			<li><a href="#Behaviour">Behaviour specifications</a></li><li><a href="#Concern">Concern specifications</a></li><li><a href="#Context">Context specifications</a></li><li><a href="#Documentgenerator">Document generator specifications</a></li><li><a href="#Htmlrenderer">Html renderer specifications</a></li><li><a href="#Namingconvention">Naming convention specifications</a></li><li><a href="#Scenario">Scenario specifications</a></li><li><a href="#Specificationdataset">Specification dataset specifications</a></li>
		</ol><a name="Behaviour">&nbsp;</a><h2>
			1. Behaviour specifications
		</h2><h3>
			Scenario: Creating a behaviour from a test fixture type
		</h3><ul>
			<li>Given a type that contains a test fixture<ul>
				<li>When creating a behaviour<ul>
					<li>Should be named for the test fixture behaviour</li>
				</ul></li>
			</ul></li><li>Given a type that does not contain a behaviour<ul>
				<li>When creating a behaviour<ul>
					<li>Should return a null behaviour</li>
				</ul></li>
			</ul></li>
		</ul><h3>
			Scenario: Adding observations to a behaviour
		</h3><ul>
			<li>Given a behaviour<ul>
				<li>When adding observations<ul>
					<li>Should add observations to the behaviour</li><li>Should add inherited observations to the behaviour</li>
				</ul></li>
			</ul></li>
		</ul><a name="Concern">&nbsp;</a><h2>
			2. Concern specifications
		</h2><h3>
			Scenario: Creating a concern from a test fixture type
		</h3><ul>
			<li>Given a type that contains a test fixture<ul>
				<li>When creating a concern<ul>
					<li>Should be named for the test fixture concern</li>
				</ul></li>
			</ul></li><li>Given a type that does not contain a concern<ul>
				<li>When creating a concern<ul>
					<li>Should return a null concern</li>
				</ul></li>
			</ul></li>
		</ul><h3>
			Scenario: Adding scenarios to a concern
		</h3><ul>
			<li>Given a concern<ul>
				<li>When adding a scenario<ul>
					<li>Should add the scenario to the concern</li><li>Should add a context to the scenario</li>
				</ul></li>
			</ul></li><li>Given a concern contains a scenario<ul>
				<li>When adding a scenario that already exists<ul>
					<li>Should not add duplicate scenarios</li>
				</ul></li>
			</ul></li>
		</ul><a name="Context">&nbsp;</a><h2>
			3. Context specifications
		</h2><h3>
			Scenario: Creating a context from a test fixture type
		</h3><ul>
			<li>Given a type that contains a test fixture<ul>
				<li>When creating a context<ul>
					<li>Should be named for the test fixture context</li>
				</ul></li>
			</ul></li><li>Given a type that does not contain a context<ul>
				<li>When creating a context<ul>
					<li>Should return a null context</li>
				</ul></li>
			</ul></li>
		</ul><h3>
			Scenario: Adding behaviours to a context
		</h3><ul>
			<li>Given a context<ul>
				<li>When adding a behaviour<ul>
					<li>Should add the behaviour to the context</li><li>Should add observations to the behaviour</li>
				</ul></li>
			</ul></li><li>Given a context contains a behaviour<ul>
				<li>When adding a behaviour that already exists<ul>
					<li>Should not add duplicate behaviours</li>
				</ul></li>
			</ul></li>
		</ul><a name="Documentgenerator">&nbsp;</a><h2>
			4. Document generator specifications
		</h2><h3>
			Scenario: Generating a spec document
		</h3><ul>
			<li>Given a spec assembly and no file currently exists<ul>
				<li>When generating a spec document<ul>
					<li>Should get specifications in assembly</li><li>Should render document</li><li>Should create document file</li>
				</ul></li>
			</ul></li>
		</ul><a name="Htmlrenderer">&nbsp;</a><h2>
			5. Html renderer specifications
		</h2><h3>
			Scenario: Rendering an html document
		</h3><ul>
			<li>Given a populated specification dataset<ul>
				<li>When rendering<ul>
					<li>Should render html</li><li>Should render page title</li><li>Should render specification title</li><li>Should render table of contents</li><li>Should render concerns</li><li>Should render concerns ordered by name</li><li>Should render scenarios</li><li>Should render contexts</li><li>Should render behaviours</li><li>Should render observations</li><li>Should render footer message</li>
				</ul></li>
			</ul></li><li>Given an html renderer<ul>
				<li>When requesting the file extension<ul>
					<li>Should return an html extension</li>
				</ul></li>
			</ul></li>
		</ul><h3>
			Scenario: Rendering specification elements
		</h3><ul>
			<li>Given an html renderer<ul>
				<li>When rendering table of contents<ul>
					<li>Should render concern links</li><li>Should not render the table of contents</li>
				</ul></li><li>When rendering a concern<ul>
					<li>Should render the concern name and contents number</li><li>Should render anchor point</li>
				</ul></li><li>When rendering a scenario<ul>
					<li>Should render the scenario name</li>
				</ul></li><li>When rendering a null scenario<ul>
					<li>Should not render the scenario element</li>
				</ul></li><li>When rendering an empty list of scenarios<ul>
					<li>Should not render the scenario elements</li>
				</ul></li><li>When rendering a context<ul>
					<li>Should render the context name</li>
				</ul></li><li>When rendering a null context<ul>
					<li>Should not render the context element</li>
				</ul></li><li>When rendering an empty list of contexts<ul>
					<li>Should not render the context elements</li>
				</ul></li><li>When rendering a behaviour<ul>
					<li>Should render the behaviour name</li><li>Should render observations</li>
				</ul></li><li>When rendering an observation<ul>
					<li>Should render the observation name</li>
				</ul></li>
			</ul></li>
		</ul><a name="Namingconvention">&nbsp;</a><h2>
			6. Naming convention specifications
		</h2><h3>
			Scenario: Matching a naming convention
		</h3><ul>
			<li>Given a test fixture type and the root namespace is suffixed with specs<ul>
				<li>When matching concern<ul>
					<li>Should match concern</li>
				</ul></li>
			</ul></li><li>Given a test fixture type and the root namespace is suffixed with spec<ul>
				<li>When matching concern<ul>
					<li>Should match concern</li>
				</ul></li>
			</ul></li><li>Given a test fixture type and the root namespace is suffixed with tests<ul>
				<li>When matching lower case concerns suffixed with tests<ul>
					<li>Should match concern</li>
				</ul></li>
			</ul></li><li>Given a test fixture type and the root namespace is suffixed with test<ul>
				<li>When matching concern<ul>
					<li>Should match concern</li>
				</ul></li>
			</ul></li><li>Given a test fixture type and the test fixture inherits from a base class prefixed "with scenario of"<ul>
				<li>When matching scenario<ul>
					<li>Should match scenario</li>
				</ul></li>
			</ul></li><li>Given a test fixture type and the test fixture inherits from a base class prefixed with "when"<ul>
				<li>When matching scenario<ul>
					<li>Should match scenario</li>
				</ul></li>
			</ul></li><li>Given a test fixture type and the test fixture is camel case<ul>
				<li>When matching behaviour<ul>
					<li>Should convert to lower case</li>
				</ul></li>
			</ul></li><li>Given a test fixture type and is camel case with underscores<ul>
				<li>When matching behavior<ul>
					<li>Should convert to lower case</li>
				</ul></li>
			</ul></li><li>Given a test fixture type and contains double underscores<ul>
				<li>When matching behavior<ul>
					<li>Should convert double underscores to quotes</li>
				</ul></li>
			</ul></li>
		</ul><a name="Scenario">&nbsp;</a><h2>
			7. Scenario specifications
		</h2><h3>
			Scenario: Creating a scenario from a test fixture type
		</h3><ul>
			<li>Given a type that contains a test fixture<ul>
				<li>When creating a scenario<ul>
					<li>Should be named for the test fixture concern</li>
				</ul></li>
			</ul></li><li>Given a type that does not contain a scenario<ul>
				<li>When creating a scenario<ul>
					<li>Should return a null scenario</li>
				</ul></li>
			</ul></li>
		</ul><h3>
			Scenario: Adding contexts to a scenario
		</h3><ul>
			<li>Given a scenario<ul>
				<li>When adding a context<ul>
					<li>Should add the context to the scenario</li><li>Should add a behaviour to the context</li>
				</ul></li><li>When adding a context that already exists<ul>
					<li>Should not add duplicate contexts</li>
				</ul></li>
			</ul></li>
		</ul><a name="Specificationdataset">&nbsp;</a><h2>
			8. Specification dataset specifications
		</h2><h3>
			Scenario: Building a specification dataset
		</h3><ul>
			<li>Given the specification dataset is built from an assembly<ul>
				<li>When building<ul>
					<li>Should add all concerns found in the assembly</li>
				</ul></li>
			</ul></li><li>Given the specification dataset contains concerns<ul>
				<li>When adding a concern that already exists<ul>
					<li>Should not add duplicate concerns</li>
				</ul></li>
			</ul></li>
		</ul><hr /><p><i>Generated by BSpec <a href="http://code.google.com/p/bspec/" target="_blank">http://code.google.com/p/bspec/</a></i></p>
	</body>
</html>